package com.线程Thread.线程方法;

public class Thread__Method_01 {
    public static void main(String[] args) throws InterruptedException {
        /** 线程常用方法
         *  setName  自定义设置线程名称
         *  getName  返回该线程的名称
         *  start  启动线程
         *  run  调用线程对象的run方法
         *  setPriority  更改线程的优先级（最大10，最小1，正常5）
         *      线程可以具有的最大优先级。MAX_PRIORITY = 10;
         *      分配给线程的默认优先级。 NORM_PRIORITY = 5;
         *      线程可以具有的最低优先级 MIN_PRIORITY = 1;
         *  getPriority  返回线程的优先级
         *  sleep  让当前正在执行的线程休眠指定毫秒  1000毫秒 = 1秒
         *  interrupt  中断休眠状态；例如可以打断正在休眠的线程，使其继续工作
         */
        MyThread mt = new MyThread();
        mt.setName("线程1");  //自定义设置线程名称
        mt.setPriority(Thread.MIN_PRIORITY);//设置最低优先级1
        mt.start();  //启动线程
        Thread.sleep(4000);  //休眠4s后运行 mt.interrupt();
        mt.interrupt();  //中断休眠状态，此时mt线程正在休眠20s，mt.interrupt()方法会打断休眠状态，继续进行mt线程；
        System.out.println(mt.getName()+"的优先级为"+mt.getPriority());//获取当前 线程名 和 线程优先级

    }
}

class MyThread extends Thread {
    /***
     * 输出10次 正在运行 后休眠20s
     * 若运行到 当前线程.interrupt()方法;  就会打断休眠，抛出异常 InterruptedException（中断异常）
     */
    @Override
    public void run() {

        for (int i = 0; i < 10; i++) {
            System.out.println(i + "  " + Thread.currentThread().getName() + "正在运行");
        }
        try {
            System.out.println(Thread.currentThread().getName() + "休眠20s中");
            Thread.sleep(20000);
        } catch (InterruptedException e) {  //捕获抛出的中断异常
            //若运行到 当前线程.interrupt()方法;  就会打断休眠，抛出异常 InterruptedException（中断异常）
            System.out.println(Thread.currentThread().getName() + "休眠被打断了，终止当前休眠");
        }
    }
}
